Skip to content

chore(security): patch 32 Dependabot alerts - #1988

Merged
ShohanRahman merged 2 commits into
mainfrom
security/2026-10-08
Oct 12, 2026
Merged

ShohanRahman merged 2 commits into
mainfrom
security/2026-10-08

Conversation

@PMerlet

@PMerlet PMerlet commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

👋 First-level support: see Handling automated security PRs for how to triage and merge this PR.

Summary

32 fixed, 0 ignored, 50 deferred, 7 resolutions added, 0 resolutions removed, 6 could-not-auto-fix. | label: 🔒 security applied

Fixed

Done Alert Package Ecosystem From → To Severity What was bumped
- [ ] #529 ip-address npm <= 10.5.0 → 10.7.3 medium updated root resolution **/express-rate-limit/ip-address ^10.3.1 → ^10.7.1 and added **/socks/ip-address ^10.7.1
- [ ] #530 ip-address npm <= 10.5.0 → 10.7.3 medium updated root resolution **/express-rate-limit/ip-address ^10.3.1 → ^10.7.1 and added **/socks/ip-address ^10.7.1
- [ ] #533 brace-expansion npm 2.0.x → 2.1.7 high added **/minimatch/brace-expansion ^2.1.7 in packages/workflow-executor/docker/build-deps-manifest.js RESOLUTIONS and regenerated lockfile
- [ ] #534 brace-expansion npm 2.0.x → 2.1.7 high added **/minimatch/brace-expansion ^2.1.7 in packages/workflow-executor/docker/build-deps-manifest.js RESOLUTIONS and regenerated lockfile
- [ ] #535 brace-expansion npm 2.0.x → 2.1.7 medium added **/minimatch/brace-expansion ^2.1.7 in packages/workflow-executor/docker/build-deps-manifest.js RESOLUTIONS and regenerated lockfile
- [ ] #536 moment npm 2.29.4 → 2.31.0 medium added **/moment ^2.31.0 in packages/workflow-executor/docker/build-deps-manifest.js RESOLUTIONS and regenerated lockfile
- [ ] #537 ip-address npm 10.5.0 → 10.7.3 medium added **/ip-address ^10.7.1 in packages/workflow-executor/docker/build-deps-manifest.js RESOLUTIONS and regenerated lockfile
- [ ] #538 ip-address npm 10.5.0 → 10.7.3 medium added **/ip-address ^10.7.1 in packages/workflow-executor/docker/build-deps-manifest.js RESOLUTIONS and regenerated lockfile
- [ ] #539 fast-uri npm 3.1.6 → 3.1.8 medium bumped **/@fastify/ajv-compiler/fast-uri, **/fast-json-stringify/fast-uri, **/ajv/fast-uri → ^3.1.8 in packages/workflow-executor/docker/build-deps-manifest.js RESOLUTIONS and regenerated lockfile
- [ ] #540 markdown-it npm 14.3.0 → 14.3.2 medium added root resolution **/markdown-it ^14.3.1
- [ ] #542 undici npm 6.28.0/7.29.0 → 6.29.0/7.30.0 low tightened resolutions **/@actions/http-client/undici, **/node-gyp/undici → ^6.28.1 and **/@semantic-release/github/undici → ^7.29.1
- [ ] #543 undici npm 6.28.0/7.29.0 → 6.29.0/7.30.0 high tightened resolutions **/@actions/http-client/undici, **/node-gyp/undici → ^6.28.1 and **/@semantic-release/github/undici → ^7.29.1
- [ ] #544 undici npm 6.28.0/7.29.0 → 6.29.0/7.30.0 low tightened resolutions **/@actions/http-client/undici, **/node-gyp/undici → ^6.28.1 and **/@semantic-release/github/undici → ^7.29.1
- [ ] #545 undici npm 6.28.0/7.29.0 → 6.29.0/7.30.0 medium tightened resolutions **/@actions/http-client/undici, **/node-gyp/undici → ^6.28.1 and **/@semantic-release/github/undici → ^7.29.1
- [ ] #549 undici npm 6.28.0/7.29.0 → 6.29.0/7.30.0 low tightened resolutions **/@actions/http-client/undici, **/node-gyp/undici → ^6.28.1 and **/@semantic-release/github/undici → ^7.29.1
- [ ] #550 undici npm 6.28.0/7.29.0 → 6.29.0/7.30.0 low tightened resolutions **/@actions/http-client/undici, **/node-gyp/undici → ^6.28.1 and **/@semantic-release/github/undici → ^7.29.1
- [ ] #551 undici npm 6.28.0/7.29.0 → 6.29.0/7.30.0 medium tightened resolutions **/@actions/http-client/undici, **/node-gyp/undici → ^6.28.1 and **/@semantic-release/github/undici → ^7.29.1
- [ ] #558 brace-expansion npm 2.1.4 → 2.1.7 high updated resolutions **/@oclif/core/minimatch/brace-expansion, **/filelist/minimatch/brace-expansion → ^2.1.7; added **/@redocly/openapi-core/minimatch/brace-expansion ^2.1.7
- [ ] #561 brace-expansion npm 2.1.4 → 2.1.7 high updated resolutions **/@oclif/core/minimatch/brace-expansion, **/filelist/minimatch/brace-expansion → ^2.1.7; added **/@redocly/openapi-core/minimatch/brace-expansion ^2.1.7
- [ ] #563 brace-expansion npm 5.0.4/5.0.5/5.0.6 → 5.0.12 medium added **/nx/brace-expansion ^5.0.12; cleared lockfile entries so parents' ^5.0.1/^5.0.5 ranges re-resolve to 5.0.12
- [ ] #564 brace-expansion npm 2.1.4 → 2.1.7 medium updated resolutions **/@oclif/core/minimatch/brace-expansion, **/filelist/minimatch/brace-expansion → ^2.1.7; added **/@redocly/openapi-core/minimatch/brace-expansion ^2.1.7
- [ ] #565 brace-expansion npm 1.1.12 → 1.1.21 medium cleared lockfile entries and reinstalled to pick up latest minor matching parents' ^1.1.7
- [ ] #566 moment npm 2.29.4 → 2.31.0 medium added root resolution **/moment ^2.31.0
- [ ] #568 ip-address npm 10.5.0 → 10.7.3 medium updated root resolution **/express-rate-limit/ip-address ^10.3.1 → ^10.7.1 and added **/socks/ip-address ^10.7.1
- [ ] #570 @nestjs/platform-fastify npm 11.1.28 → 11.2.7 high added root resolution @nestjs/platform-fastify ^11.2.4
- [ ] #571 axios npm 1.19.0 → 1.20.0 high updated root resolution axios ^1.18.0 → ^1.20.0
- [ ] #572 axios npm 1.19.0 → 1.20.0 high updated root resolution axios ^1.18.0 → ^1.20.0
- [ ] #573 axios npm 1.19.0 → 1.20.0 high updated root resolution axios ^1.18.0 → ^1.20.0
- [ ] #574 axios npm 1.19.0 → 1.20.0 high updated root resolution axios ^1.18.0 → ^1.20.0
- [ ] #575 axios npm 1.19.0 → 1.20.0 high updated root resolution axios ^1.18.0 → ^1.20.0
- [ ] #576 axios npm 1.19.0 → 1.20.0 medium updated root resolution axios ^1.18.0 → ^1.20.0
- [ ] #577 axios npm 1.19.0 → 1.20.0 medium updated root resolution axios ^1.18.0 → ^1.20.0

Ignored

None this run.

Deferred

Alerts opened less than 7 days ago, deferred to the next run:

#578, #579, #580, #581, #582, #584, #585, #586, #588, #589, #590, #591, #592, #593, #594, #595, #596, #597, #598, #599, #600, #602, #603, #604, #605, #606, #607, #608, #609, #610, #611, #612, #613, #614, #615, #616, #617, #618, #619, #620, #621, #622, #623, #624, #625, #626, #627, #628, #629, #630

Resolutions added

Alert Package / pin Parent chain tried Why bump wasn't viable Form
#529, #530, #568 **/socks/ip-address ^10.7.1 @forestadmin/datasource-sql → sequelize/mariadb → socks (pins ^10.0.1) socks has no patched release upgrading ip-address past 10.5.0 for the socks major we track scoped
#570 @nestjs/platform-fastify ^11.2.4 agent (devDep), _example (direct dep) both pin ^11.1.24 which semver-allows 11.2.4 lockfile was pinned to 11.1.28; adding an unconditional pin forces re-resolution and future-proofs the floor unconditional
#566, #536 **/moment ^2.31.0 (root) and **/moment ^2.31.0 (workflow-executor docker RESOLUTIONS) hoisted via sequelize@6 and moment-timezone which pin ^2.19.0/^2.29.4 sequelize@6 is in long-term maintenance and does not ship an upper bound on its moment range; moment 2.31.0 is drop-in unconditional
#540 **/markdown-it ^14.3.1 (root) hoisted via dev-dep typedoc@^0.28 typedoc pins ^14.1.1; semver already allowed 14.3.1 but lockfile stuck at 14.3.0 unconditional
#563 **/nx/brace-expansion ^5.0.12 nx@22 depends on exact 5.0.6 (no semver range) nx cannot be bumped without a lerna/nx-devkit chain update; scoped pin forces the subtree only scoped
#558, #561, #564 **/@redocly/openapi-core/minimatch/brace-expansion ^2.1.7 @forestadmin/agent-bff → redoc → @redocly/openapi-core → minimatch@5.1.9 → brace-expansion@^2.0.1 redoc is unmaintained; minimatch 5.x pins ^2.0.1 scoped
#533, #534, #535 **/minimatch/brace-expansion ^2.1.7 (workflow-executor docker RESOLUTIONS) isolated docker install has no root resolutions; scoped by minimatch parent isolated docker install uses its own manifest-level resolutions scoped

Resolutions updated in place (not new): **/express-rate-limit/ip-address ^10.3.1 → ^10.7.1; axios ^1.18.0 → ^1.20.0; **/@actions/http-client/undici ^6.28.0 → ^6.28.1; **/node-gyp/undici ^6.28.0 → ^6.28.1; **/@semantic-release/github/undici ^7.29.0 → ^7.29.1; **/@oclif/core/minimatch/brace-expansion ^2.1.4 → ^2.1.7; **/filelist/minimatch/brace-expansion ^2.1.4 → ^2.1.7; **/@fastify/ajv-compiler/fast-uri ^3.1.6 → ^3.1.8 (workflow-executor docker); **/fast-json-stringify/fast-uri ^3.1.6 → ^3.1.8 (workflow-executor docker); **/ajv/fast-uri ^3.1.6 → ^3.1.8 (workflow-executor docker).

Resolutions removed

None this run — a redundancy sweep was out of scope for this patch batch (every existing pin was verified still-present in the resolved tree, none stale).

Could not auto-fix

Alert What was attempted Observed failure
#485 (medium) Bump sanitize-html to patched release sanitize-html@2.17.6+ requires ESM-only htmlparser2@^12, breaks Jest in all BFF test suites (CommonJS). See fix(security): address CI failure commit on this branch.
#492 (medium) Bump sanitize-html to patched release sanitize-html@2.17.6+ requires ESM-only htmlparser2@^12, breaks Jest in all BFF test suites (CommonJS). See fix(security): address CI failure commit on this branch.
#507 (medium) Bump sanitize-html to patched release sanitize-html@2.17.6+ requires ESM-only htmlparser2@^12, breaks Jest in all BFF test suites (CommonJS). See fix(security): address CI failure commit on this branch.
#508 (medium) Bump sanitize-html to patched release sanitize-html@2.17.6+ requires ESM-only htmlparser2@^12, breaks Jest in all BFF test suites (CommonJS). See fix(security): address CI failure commit on this branch.
#527 (medium) Bump sanitize-html to patched release sanitize-html@2.17.6+ requires ESM-only htmlparser2@^12, breaks Jest in all BFF test suites (CommonJS). See fix(security): address CI failure commit on this branch.
#528 (medium) Bump sanitize-html to patched release sanitize-html@2.17.6+ requires ESM-only htmlparser2@^12, breaks Jest in all BFF test suites (CommonJS). See fix(security): address CI failure commit on this branch.

Common blocker: Bumping sanitize-html from 2.17.5 → 2.17.7 (first attempt) and 2.17.6 (second attempt) both fail CI: both patched versions declare htmlparser2@^12.0.0, which is a pure-ESM package (type: module) and Jest (CommonJS) chokes on import { Parser } from "./Parser.js". Fix requires either (a) adding transformIgnorePatterns + ESM Jest wiring to every workspace that transitively imports sanitize-html (goes beyond "minor test adjustments tied to a specific bump"), or (b) overriding htmlparser2 back to ^10.1.0 via a resolution — but sanitize-html 2.17.6+ was written against the 12.x API, so this could silently misbehave at runtime. Leaving at 2.17.5 pending a human decision.

Risks

Per bump, from upstream CHANGELOGs:

  • axios 1.19 → 1.20 — exclusively security + bug fixes; no breaking API changes. Our usage in forest-cloud is simple HTTP posts; low risk.
  • ip-address 10.5.0 → 10.7.3 — stricter classifier semantics for IPv6 link-local, NAT64, and cross-family subnet comparisons. Code that previously treated non-link-local addresses as link-local (incorrectly) will now classify them correctly — this is a behavior fix, not a regression. datasource-sql's use via socks only touches hostname resolution, not these classifier methods.
  • undici 6.28.0 → 6.29.0 / 7.29.0 → 7.30.0 — adds TLS cert validation back into BalancedPool and fixes Set-Cookie leakage. Transitive via node-gyp, @actions/http-client, @semantic-release/github; no direct usage in our code.
  • @nestjs/platform-fastify 11.1.28 → 11.2.7 — adds middleware path-scoping security fix. Nest is a devDep in agent (tests only) and a regular dep in private _example; not shipped.
  • moment 2.29.4 → 2.31.0 — stricter locale name validation. Our only usage is via sequelize's date formatting; no locale paths are user-controlled.
  • brace-expansion — pure DoS fixes (quadratic/recursive). All usages are transitive via minimatch under eslint, jest, lerna, nx, @oclif/core, @redocly/openapi-core, etc. Low risk.
  • markdown-it 14.3.0 → 14.3.2 — linkify quadratic DoS fix. Only used by dev-dep typedoc on our own source code — never user-controlled markdown.
  • fast-uri 3.1.6 → 3.1.8 (workflow-executor docker) — host-case normalization fix for percent-encoded octets. Transitive via fastify's ajv/fast-json-stringify chain; no direct consumer in our code.

Manual testing

Covered by CI (unit + integration suites per workspace, Docker build smoke tests under packages/*/docker/smoke-test.sh). The two regenerated docker lockfiles will be re-exercised by the Docker build steps with --frozen-lockfile.

Pre-push lint note: yarn eslint packages/workflow-executor/docker/build-deps-manifest.js reports 10 pre-existing errors (@typescript-eslint/no-var-requires, no-continue, padding-line-between-statements, no-use-before-define) that are not in lines I touched. Scope rule says leave pre-existing issues alone. Prettier passed on all changed files.

Validation

✅ CI green (Actions + commit statuses; app-based checks not monitored)

@PMerlet PMerlet changed the title chore(security): patch 38 Dependabot alerts chore(security): patch 32 Dependabot alerts Oct 8, 2026
@qltysh

qltysh Bot commented Oct 8, 2026

Copy link
Copy Markdown

Qlty


Coverage Impact

This PR will not change total coverage.

🚦 See full report on Qlty Cloud »

🛟 Help
  • Diff Coverage: Coverage for added or modified lines of code (excludes deleted files). Learn more.

  • Total Coverage: Coverage for the whole repository, calculated as the sum of all File Coverage. Learn more.

  • File Coverage: Covered Lines divided by Covered Lines plus Missed Lines. (Excludes non-executable lines including blank lines and comments.)

    • Indirect Changes: Changes to File Coverage for files that were not modified in this PR. Learn more.

@ShohanRahman
ShohanRahman merged commit aa99ff1 into main Oct 12, 2026
42 checks passed
@ShohanRahman
ShohanRahman deleted the security/2026-10-08 branch October 12, 2026 15:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants